/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ia_0.data_model.actions;
import ia_0.Move;
import ia_0.data_model.character.Character;
import ia_0.data_model.character.POI;
import java.awt.Point;
import ia_0.*;
import ia_0.data_model.Element;
import ia_0.data_model.character.POI.TypePOI;
import ia_0.data_model.character.human.Eleveur;
import ia_0.data_model.character.human.Porteurs;
import java.util.Random;

/**
 *
 * @author yguo
 */
public class ActionChasser extends Action{

    public ActionChasser(Character c){
        super(c);
    }

    @Override
    public boolean toDo() {
        return true;
        
    }

    @Override
    public void doIt() {
        if(m==null){
            m=new Move(c, lieu(3));
        }
        Point p=m.iterate();
        if(p==null){
            m=new Move(c, lieu(3));
        } else{
        if(p.equals(m.dest)){
            for(Element e:World.elements.keySet()){
                 if(e.getClass().isAssignableFrom(Eleveur.class)&&World.elements.get(e).equals(m.dest))
                 {
                     Random rand = new Random();
                     int bat= rand.nextInt(10);
                     if(bat<7){
                     //l'eleveur est ganant
                         System.out.println("le chasseur est ganant");
                         m=new Move(c,c.knowledge.getPoi(POI.TypePOI.food).position);
                     }
                     else{
                          //l'eleveur est ganant
                         System.out.println("le animal est ganant");
                     }
                 }
                    
              }
            m=null;
            setTermine();
        }
        }
        
        
    }
     public Point lieu(int rayon){
        int x=(int) Math.round(World.elements.get(c).x+rayon*Math.random());
        int y=(int) Math.round(World.elements.get(c).y+rayon*Math.random());
        //il ne faut pas depasser le Monde
        if(x<World.w &&y<World.h)
            return new Point( x ,y);
        else
            return new Point(0,0);
    }


}
